/**
 * 应用配置文件
 * 统一管理API配置、环境变量、常量等
 */

// 环境配置 - 使用环境变量
const ENV = {
  // 开发环境
  development: {
    baseURL: import.meta.env.VITE_API_BASE_URL || 'http://localhost:3000/api',
    timeout: parseInt(import.meta.env.VITE_API_TIMEOUT) || 10000,
    debug: import.meta.env.VITE_DEBUG === 'true'
  },
  // 测试环境
  testing: {
    baseURL: import.meta.env.VITE_API_BASE_URL || 'https://test-api.tictac.com/api',
    timeout: parseInt(import.meta.env.VITE_API_TIMEOUT) || 15000,
    debug: import.meta.env.VITE_DEBUG === 'true'
  },
  // 生产环境
  production: {
    baseURL: import.meta.env.VITE_API_BASE_URL || 'https://api.tictac.com/api',
    timeout: parseInt(import.meta.env.VITE_API_TIMEOUT) || 10000,
    debug: import.meta.env.VITE_DEBUG === 'true'
  }
}

// 当前环境（可通过构建工具注入）
const CURRENT_ENV = import.meta.env.NODE_ENV || 'development'

// 当前环境配置
export const config = ENV[CURRENT_ENV]

// API配置
export const API_CONFIG = {
  // 基础URL
  baseURL: config.baseURL,
  // 请求超时时间
  timeout: config.timeout,
  // 是否开启调试
  debug: config.debug,
  // 数据源类型：'remote' | 'mock' | 'sqlite'
  dataSource: import.meta.env.VITE_DATA_SOURCE || 'remote',
  // 是否使用Mock数据（向后兼容）
  useMock: import.meta.env.NODE_ENV === 'development' && import.meta.env.VITE_USE_MOCK !== 'false',
  // Mock配置
  mock: {
    enabled: import.meta.env.VITE_MOCK_ENABLED === 'true',
    delay: { 
      min: parseInt(import.meta.env.VITE_MOCK_DELAY_MIN) || 200, 
      max: parseInt(import.meta.env.VITE_MOCK_DELAY_MAX) || 800 
    }, // 模拟网络延迟
    successRate: parseFloat(import.meta.env.VITE_MOCK_SUCCESS_RATE) || 0.95, // 成功率
    enableLog: import.meta.env.VITE_MOCK_ENABLE_LOG === 'true' // 是否打印Mock日志
  },
  // SQLite配置
  sqlite: {
    enabled: true,
    dbName: import.meta.env.VITE_SQLITE_DB_NAME || 'tictac.db',
    version: import.meta.env.VITE_SQLITE_VERSION || '1.0',
    displayName: 'TicTac Database',
    size: parseInt(import.meta.env.VITE_SQLITE_SIZE) || 5 * 1024 * 1024, // 5MB
    enableLog: import.meta.env.VITE_SQLITE_ENABLE_LOG === 'true', // 是否打印SQLite日志
    autoBackup: import.meta.env.VITE_SQLITE_AUTO_BACKUP === 'true', // 自动备份
    backupInterval: parseInt(import.meta.env.VITE_SQLITE_BACKUP_INTERVAL) || 24 * 60 * 60 * 1000 // 备份间隔（24小时）
  },
  // 请求头配置
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  },
  // 状态码配置
  STATUS_CODE: {
    SUCCESS: 200,
    CREATED: 201,
    NO_CONTENT: 204,
    BAD_REQUEST: 400,
    UNAUTHORIZED: 401,
    FORBIDDEN: 403,
    NOT_FOUND: 404,
    METHOD_NOT_ALLOWED: 405,
    CONFLICT: 409,
    UNPROCESSABLE_ENTITY: 422,
    TOO_MANY_REQUESTS: 429,
    INTERNAL_SERVER_ERROR: 500,
    BAD_GATEWAY: 502,
    SERVICE_UNAVAILABLE: 503,
    GATEWAY_TIMEOUT: 504
  }
}

// 应用常量
export const APP_CONFIG = {
  // 应用信息
  APP_NAME: import.meta.env.VITE_APP_NAME || 'TicTac',
  APP_VERSION: import.meta.env.VITE_APP_VERSION || '1.0.0',
  APP_DESCRIPTION: import.meta.env.VITE_APP_DESCRIPTION || '个人效率管理应用',
  
  // 存储键名
  STORAGE_KEYS: {
    TOKEN: 'token',
    USER_INFO: 'userInfo',
    SETTINGS: 'settings',
    THEME: 'theme',
    LANGUAGE: 'language'
  },
  
  // 页面路径
  PAGES: {
    LOGIN: '/pages/login/index',
    HOME: '/pages/index/index',
    HABITS: '/pages/habits/index',
    FINANCE: '/pages/finance/index',
    TIME: '/pages/time/index',
    TODOS: '/pages/todos/index',
    STATS: '/pages/stats/index',
    SETTINGS: '/pages/settings/index',
    PROFILE: '/pages/profile/index'
  },
  
  // 主题配置
  THEMES: {
    LIGHT: 'light',
    DARK: 'dark',
    AUTO: 'auto'
  },
  
  // 语言配置
  LANGUAGES: {
    ZH_CN: 'zh-CN',
    EN_US: 'en-US'
  },
  
  // 分页配置
  PAGINATION: {
    DEFAULT_PAGE_SIZE: parseInt(import.meta.env.VITE_PAGINATION_DEFAULT_SIZE) || 20,
    MAX_PAGE_SIZE: parseInt(import.meta.env.VITE_PAGINATION_MAX_SIZE) || 100
  },
  
  // 文件上传配置
  UPLOAD: {
    MAX_FILE_SIZE: parseInt(import.meta.env.VITE_UPLOAD_MAX_FILE_SIZE) || 10 * 1024 * 1024, // 10MB
    BASE_URL: import.meta.env.VITE_UPLOAD_BASE_URL || 'http://localhost:3000/upload',
    ALLOWED_IMAGE_TYPES: ['jpg', 'jpeg', 'png', 'gif', 'webp'],
    ALLOWED_FILE_TYPES: ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt']
  },
  
  // 缓存配置
  CACHE: {
    DEFAULT_EXPIRE_TIME: parseInt(import.meta.env.VITE_CACHE_DEFAULT_EXPIRE) || 30 * 60 * 1000, // 30分钟
    USER_INFO_EXPIRE_TIME: parseInt(import.meta.env.VITE_CACHE_USER_INFO_EXPIRE) || 24 * 60 * 60 * 1000, // 24小时
    STATS_EXPIRE_TIME: parseInt(import.meta.env.VITE_CACHE_STATS_EXPIRE) || 5 * 60 * 1000 // 5分钟
  }
}

// 习惯相关配置
export const HABITS_CONFIG = {
  // 习惯类型
  TYPES: {
    DAILY: 'daily',
    WEEKLY: 'weekly',
    MONTHLY: 'monthly',
    CUSTOM: 'custom'
  },
  
  // 习惯分类
  CATEGORIES: [
    { id: 'health', name: '健康', icon: 'heart', color: '#ff6b6b' },
    { id: 'study', name: '学习', icon: 'book', color: '#4ecdc4' },
    { id: 'work', name: '工作', icon: 'briefcase', color: '#45b7d1' },
    { id: 'exercise', name: '运动', icon: 'dumbbell', color: '#96ceb4' },
    { id: 'social', name: '社交', icon: 'users', color: '#feca57' },
    { id: 'hobby', name: '爱好', icon: 'palette', color: '#ff9ff3' },
    { id: 'other', name: '其他', icon: 'more-horizontal', color: '#a0a0a0' }
  ],
  
  // 优先级
  PRIORITIES: [
    { id: 'low', name: '低', color: '#95a5a6' },
    { id: 'medium', name: '中', color: '#f39c12' },
    { id: 'high', name: '高', color: '#e74c3c' }
  ],
  
  // 提醒时间
  REMINDER_TIMES: [
    { id: 'morning', name: '早上', time: '08:00' },
    { id: 'noon', name: '中午', time: '12:00' },
    { id: 'afternoon', name: '下午', time: '15:00' },
    { id: 'evening', name: '晚上', time: '18:00' },
    { id: 'night', name: '夜晚', time: '21:00' }
  ]
}

// 财务相关配置
export const FINANCE_CONFIG = {
  // 账户类型
  ACCOUNT_TYPES: [
    { id: 'cash', name: '现金', icon: 'dollar-sign' },
    { id: 'bank', name: '银行卡', icon: 'credit-card' },
    { id: 'alipay', name: '支付宝', icon: 'smartphone' },
    { id: 'wechat', name: '微信', icon: 'message-circle' },
    { id: 'investment', name: '投资', icon: 'trending-up' },
    { id: 'other', name: '其他', icon: 'more-horizontal' }
  ],
  
  // 交易类型
  TRANSACTION_TYPES: {
    INCOME: 'income',
    EXPENSE: 'expense',
    TRANSFER: 'transfer'
  },
  
  // 收入分类
  INCOME_CATEGORIES: [
    { id: 'salary', name: '工资', icon: 'briefcase' },
    { id: 'bonus', name: '奖金', icon: 'award' },
    { id: 'investment', name: '投资收益', icon: 'trending-up' },
    { id: 'part_time', name: '兼职', icon: 'clock' },
    { id: 'gift', name: '礼金', icon: 'gift' },
    { id: 'other', name: '其他', icon: 'more-horizontal' }
  ],
  
  // 支出分类
  EXPENSE_CATEGORIES: [
    { id: 'food', name: '餐饮', icon: 'coffee' },
    { id: 'transport', name: '交通', icon: 'car' },
    { id: 'shopping', name: '购物', icon: 'shopping-bag' },
    { id: 'entertainment', name: '娱乐', icon: 'film' },
    { id: 'health', name: '医疗', icon: 'heart' },
    { id: 'education', name: '教育', icon: 'book' },
    { id: 'housing', name: '住房', icon: 'home' },
    { id: 'utilities', name: '水电', icon: 'zap' },
    { id: 'other', name: '其他', icon: 'more-horizontal' }
  ]
}

// 时间管理相关配置
export const TIME_CONFIG = {
  // 活动分类
  ACTIVITY_CATEGORIES: [
    { id: 'work', name: '工作', icon: 'briefcase', color: '#3498db' },
    { id: 'study', name: '学习', icon: 'book', color: '#9b59b6' },
    { id: 'exercise', name: '运动', icon: 'activity', color: '#e74c3c' },
    { id: 'entertainment', name: '娱乐', icon: 'film', color: '#f39c12' },
    { id: 'social', name: '社交', icon: 'users', color: '#2ecc71' },
    { id: 'rest', name: '休息', icon: 'moon', color: '#95a5a6' },
    { id: 'other', name: '其他', icon: 'more-horizontal', color: '#34495e' }
  ],
  
  // 时间单位
  TIME_UNITS: {
    MINUTE: 'minute',
    HOUR: 'hour',
    DAY: 'day'
  },
  
  // 统计周期
  STAT_PERIODS: [
    { id: 'day', name: '今日' },
    { id: 'week', name: '本周' },
    { id: 'month', name: '本月' },
    { id: 'year', name: '今年' }
  ]
}

// 待办事项相关配置
export const TODOS_CONFIG = {
  // 优先级
  PRIORITIES: [
    { id: 'low', name: '低', color: '#95a5a6', value: 1 },
    { id: 'medium', name: '中', color: '#f39c12', value: 2 },
    { id: 'high', name: '高', color: '#e74c3c', value: 3 },
    { id: 'urgent', name: '紧急', color: '#c0392b', value: 4 }
  ],
  
  // 状态
  STATUSES: {
    PENDING: 'pending',
    IN_PROGRESS: 'in_progress',
    COMPLETED: 'completed',
    CANCELLED: 'cancelled'
  },
  
  // 分类
  CATEGORIES: [
    { id: 'work', name: '工作', icon: 'briefcase' },
    { id: 'personal', name: '个人', icon: 'user' },
    { id: 'study', name: '学习', icon: 'book' },
    { id: 'health', name: '健康', icon: 'heart' },
    { id: 'family', name: '家庭', icon: 'home' },
    { id: 'other', name: '其他', icon: 'more-horizontal' }
  ]
}

// 导出所有配置
export default {
  api: API_CONFIG,
  app: APP_CONFIG,
  habits: HABITS_CONFIG,
  finance: FINANCE_CONFIG,
  time: TIME_CONFIG,
  todos: TODOS_CONFIG
}